Initramfs mit Dropbear unter Debian
Damit ich auch remote das Verschlüsselungspasswort von cryptsetup eingeben kann wenn ich den PC durchboote benötige ich Dropbear im Initramfs. Dropbear stellt einen SSH Dienst im Initramfs bereit, so dass ich direkt nach dem Grub mich per SSH verbinden kann und meine Festplatte entschlüsseln kann.
Um unter Debian busybox im Initramfs nutzen zu können müssen folgende Schritte durchgeführt werden_
Zuerst muss das entsprechende Paket installiert werden:
apt install dropbear-initramfs
Nach der Installation wird vermutlich direkt ein Fehler angezeigt, dass keine gültige authorized_keys Datei vorliegt. Dieses muss unter folgendem Ordner angelegt werden:
/etc/dropbear/initramfs/authorized_keys
Die Datei sollte unbedingt mit den Rechten 0600 erstellt werden. Der Aufbau ist identisch zu einer normalen authorized_keys Datei von z.B. dem standard OpenSSH Daemon.
Anschließend muss dass initramfs neu gebaut werden:
update-initramfs -u -k all
Damit wir man sich dann auch per SSH verbinden kann müssen dem Grub noch die IP Einstellungen mitgeteilt werden. Diese werden in folgender Datei konfiguriert:
/etc/default/grub
Dort muss die Zeile GRUB_CMDLINE_LINUX_DEFAULT angepasst werden:
GRUB_CMDLINE_LINUX_DEFAULT="ip=192.168.1.2::192.168.1.1::255.255.255.0 quiet"
Die Segmente teilen sie wie folgt auf:
ip=IPADDRESS::GATEWAY::NETMASK
Um die Grubconfig zu aktualisieren muss anschließend folgender Befehl ausgeführt werden:
update-grub
Wenn man sich dann per SSH dorthin verbindet hat man immer das Problem, dass der Dropbear einen anderen SSH Host Key hat, als der SSH Server (wenn der Server gestartet ist). Diese Problem umgeehe ich damit, dass ich mir zusätzlich einen DNS alias angelegt habe. Nachdem der Server duchgebootet wurde, weiß ich, dass der Dropbear gestartet wurde und mir nun einen einen anderen Host Key präsentiert. Deshalb muss ich mich zu diesem mit dem Alias Name verbinden. Das geanze sieht dann z.B. so aus:
Der Server wird duchgebootet und der Dropbear startet. Ich verbinde mich via SSH um z.B. das cryptsetup Password einzugeben mit folgendem Befehl:
ssh server-dropbear.pcspinnt.de
Der Fingerprint wurde im DNS als SSHFP Record hinterlegt und mein Client validiert diesen. Wenn der Fingeprint stimmt kann ich mich normal als root mit meinem eigenen Key dann dort anmelden.
Um das Verschlüsselungspasswort dann einzugeben muss folgender Befehl ausgeführt werden:
cryptroot-unlock
Sobald der Server dann normal gestartet ist kann ich mich gegen den Standard OpenSSH Dameon (der einen anderen Hostkey hat) verbinden:
ssh server.pcspinnt.de
Der Fingerprint wird auch gegen den DNS SSHFP Record validiert. Da es zwei komplett unterschiedliche Hostnames sind, wird mein Client niemals anmeckern, dass er den Host schon unter einem anderen Fingerprint kennt.